package base.util.lib;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang.StringUtils;
@SuppressWarnings("all")
public class FileUtils {
	/**
	 * 根据指定的字符串数组创建目录
	 * @param request
	 * @param pathinfo
	 * @return
	 */
	public static String Creatdir(HttpServletRequest request, String[] pathinfo) {
		String filepath = request.getRealPath("/");
		String  files[] = filepath.split(":");
		filepath = files[0] + ":";
		for(int i=0;i<pathinfo.length;i++){
			filepath += "\\" + pathinfo[i];
			File f1 = new File(filepath);
			boolean filepathexists = f1.exists();
			if(!filepathexists){
				 f1.mkdir();
			}
		}
		return filepath;
	}
	
    /** 
     * 创建多级目录 
     * @param aParentDir String 
     * @param aSubDir  以 / 开头 
     * @return boolean 是否成功 
     */ 
    public static boolean creatnewsDirs(String aParentDir, String aSubDir) 
    { 
        File aFile = new File(aParentDir); 
        if (aFile.exists()) 
        { 
            File aSubFile = new File(aParentDir + aSubDir); 
            if (!aSubFile.exists()) 
            { 
                return aSubFile.mkdirs(); 
            } 
            else 
            { 
                return true; 
            } 
        } 
        else 
        { 
            return false; 
        } 
    } 
    
    /**
     * 从路径字符串切割出盘符和相对路径
     * 0 为根目录 ，1 为相对目录
     * @param path
     * @param no
     * @return
     */
    public static String getdirforpath(String path,int no){
    	String fwebpath[] = path.split(":");
    	if(no==0){
    		return fwebpath[0];
    	}
    	else{
    		return fwebpath[1];
    	}
    }
    
    /**
     * 从request路径切割出盘符和相对路径
     * 0 为根目录 ，1 为相对目录 , 2为完整路径
     * @param path
     * @param no
     * @return
     */
    public static String getdirforpath(HttpServletRequest request,int no){
    	String webpath = request.getSession().getServletContext().getRealPath("/");
    	if(no==2){
    		return webpath;
    	}else{
    		return getdirforpath(webpath,no);
    		
    	}    	
    }
    
    /**
     * 得到网络路径
     * @param request
     * @param pathadd
     * @return
     * @exception 
     * 2009-2-2
     * TODO
     */
    public static String[] getdirforallpath(HttpServletRequest request,String[] pathadd){
    	
    	String getpath = getdirforpath(request,1);
    	String pathqupt[] = getpath.split("\\\\");
		List list = new ArrayList();
		for(int i=1;i<pathqupt.length-1;i++){
			 list.add(pathqupt[i].toString());
		}
		for(int j=0;j<(pathadd.length);j++){
			list.add(pathadd[j].toString());
		}
		String pathinfo[] = new String[list.size()];
		for(int i=0;i<list.size();i++){
			pathinfo[i] = (String)list.get(i);
		}
		return pathinfo;
    }
    
    //根据文件物理路径得出网络相对路径
    public static String geturlforpath(String dirpath,String pathaddurl){
    	String filenames[] = dirpath.split("\\\\");
    	String filename = filenames[filenames.length-1];
		String httppath = pathaddurl+filename;//网络路径
		return httppath;
    }
    
	/**
	 * 删除已经存在的文件
	 * @param filepath
	 */
	public static void delfile(String filepath){
		if(StringUtils.isNotEmpty(filepath)){
			File fdele = new File(filepath);
			if(fdele.exists()){
				fdele.delete();
			}
		}

	}
	
	/**
	 * 根据物理路径创建目录
	 * @param filepath
	 * @exception 
	 * 2009-2-2
	 * TODO
	 */
	public static void creatDirBypath(String filepath){
		if(StringUtils.isNotEmpty(filepath)){
			File aFile = new File(filepath);
			if(!aFile.isDirectory()){
				aFile.mkdirs();				
			}
			
		}
	}
	/**
	 * 将文件保存在Tomcat6.0目录下指定的目录中
	 * @param request
	 * @param pathinfo
	 */
	public static String CreatdirTomcat(HttpServletRequest request,String[] pathinfo){
		StringBuffer filePath = setWebAppRoot(request);
		for(int i=0;i<pathinfo.length;i++){
			filePath.append("\\".concat(pathinfo[i]));
			File f1 = new File(filePath.toString());
			if(!f1.exists()){
				f1.mkdir();
			}
		}
		return filePath.toString();
	}

	public static StringBuffer setWebAppRoot(HttpServletRequest request) {
		StringBuffer filePath = new StringBuffer("");
		String tomcatURL = request.getSession().getServletContext().getRealPath("/");//得到绝对路径
		//String tomcatURL1 = tomcatURL.substring(0,tomcatURL.lastIndexOf("\\"));//去掉最后一个/号
		//String tomcatURL2 = tomcatURL1.substring(0, tomcatURL1.lastIndexOf("\\"));//去掉工程级目录
		filePath.append(tomcatURL);
		return filePath;
	}
	
	public static String getWebAppRoot(HttpServletRequest request) {
		StringBuffer filePath = new StringBuffer("");
		String tomcatURL = request.getSession().getServletContext().getRealPath("/");//得到绝对路径
		filePath.append(tomcatURL);
		return filePath.toString();
	}
}
